#ifndef HASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP
#define HASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)

#include "../error.hpp"
#include "socket_types.hpp"
#include "socket_ops.hpp"
#include "reactor.hpp"

namespace hasio {
namespace detail {

class reactive_socket_service_base
{
public:
    using handle_type = socket_type;

    struct implementation_type_base
    {
        socket_type socket_;

        reactor::descriptor_data_t data_;
    };
    reactive_socket_service_base()
        : reactor_(*(new reactor()))
    {
    }

protected:
    reactor& reactor_;
};

}
}

#endif // HASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP 